/**
 * 项目名称: 字符串匹配.cpp
 * 项目路径: study/DataStructure/数据结构/串/KMP
 * 编辑时间: 2024年07月22日19时16分07秒
 * 用   户: 轻尘
 */

#include <bits/stdc++.h>
#define MaxSize 1000010

using namespace std;

int ne[MaxSize];
char MainString[MaxSize];
char Substring[MaxSize];

int n,m;
/**
 * 求出next数组
 * @param model
 */
void getNext(){
    for(int i =2,j=0;i<=n;i++){
        while (j && Substring[i] != Substring[j+1])j=ne[j];
        if(Substring[i] == Substring[j+1])j++;
        ne[i]=j;
    }
}

/**
 * 字符串匹配
 */
void stringMatch(){
    for(int i =1,j=0;i<=m;i++){
        while (j && MainString[i] != Substring[j+1])j=ne[j];
        if(MainString[i] == Substring[j+1])j++;
        // 匹配成功
        if(j == n){
            cout << i - j << ' ';
            j = ne[j];
        }
    }
}

int main() {
    cin>>n>>Substring+1>>m>>MainString+1;
    getNext();
    stringMatch();
    return 0;
}
